package com.delio.server.contabilidad.servicios;

import java.sql.SQLException;
import java.util.List;

import com.delio.client.contabilidad.proveedores.Proveedor;
import com.delio.client.contabilidad.servicios.Servicio;
import com.delio.client.produccion.articulos.Articulo;
import com.delio.server.base.Conexion;
import com.delio.server.base.util.GxtComboBoxPaginate;
import com.delio.server.base.util.GxtGridPaginate;
import com.extjs.gxt.ui.client.data.BasePagingLoadResult;
import com.extjs.gxt.ui.client.data.PagingLoadResult;
import com.ibatis.sqlmap.client.SqlMapClient;

public class Servicios {
	private static SqlMapClient sqlMap = null;

	@SuppressWarnings("unchecked")
	public static PagingLoadResult<Servicio> getPaginate(
			GxtGridPaginate paginate, String filter) {

		sqlMap = Conexion.getSqlMap();

		paginate.setLimit();

		if (paginate.order.equals(""))
			paginate.order = " order by id desc";

		if (filter != null)
			paginate.condition = " and todo ILIKE '%" + filter
					+ "%' OR articulo ILIKE '%" + filter + "%' OR proveedor ILIKE '%"+filter+"%'";


		List<Servicio> data = null;
		try {
			data = sqlMap.queryForList("paginateServicio", paginate);
		} catch (SQLException e) {
			e.printStackTrace();

		}
		return new BasePagingLoadResult<Servicio>(data, paginate.offset,
				count(paginate));

	}

	private static Integer count(GxtGridPaginate paginate) {
		Integer cont = null;
		try {
			cont = (Integer) sqlMap.queryForObject("countServicio");

		} catch (SQLException e) {
			e.printStackTrace();
		}
		return cont;
	}

	public static boolean save(Servicio pro) {
		sqlMap = Conexion.getSqlMap();
		boolean respuesta = true;
		try {

			if (pro.getId() != null)
				sqlMap.update("updateServicio", pro);

			else
				sqlMap.insert("insertServicio", pro);

		} catch (SQLException e) {

			e.printStackTrace();

			respuesta = false;
		}

		return respuesta;
	}

	public static boolean delete(Integer id) {

		boolean respuesta = true;

		sqlMap = Conexion.getSqlMap();
		try {
			if (id != null)
				sqlMap.delete("deleteServicio", id);
			else
				respuesta = false;

		} catch (SQLException e) {

			e.printStackTrace();

			respuesta = false;

		}
		return respuesta;

	}

	public static boolean deleteAll(String ids) {
		boolean respuesta = true;

		sqlMap = Conexion.getSqlMap();
		try {
			if (!ids.equals(""))
				sqlMap.delete("deleteAllServicio", ids);
			else
				respuesta = false;

		} catch (SQLException e) {

			e.printStackTrace();

			respuesta = false;

		}
		return respuesta;

	}

	// // combo avanzado para articulos/////

	@SuppressWarnings({ "unchecked", "static-access" })
	public static PagingLoadResult<Articulo> getPaginateCombo(
			GxtComboBoxPaginate paginate) {
		sqlMap = Conexion.getSqlMap();

		paginate.searchField = "descripcion";
		paginate.sortField = "descripcion";
		paginate.sortDir = "ASC";
		paginate.setLimit();
		if (paginate.order.equals("")) {
			paginate.order = " order by id desc";
		}
		List<Articulo> data = null;
		try {
			data = sqlMap.queryForList("getComboArticulos", paginate);

		} catch (SQLException e) {
			e.printStackTrace();
		}
		return new BasePagingLoadResult<Articulo>(data, paginate.offset,count(paginate));
	}

	public static Integer count(GxtComboBoxPaginate paginate) {
		Integer count = null;
		try {
			count = (Integer) sqlMap.queryForObject("countComboArticulos",
					paginate);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return count;
	}

	// //combo avanzado para proveedores////

	@SuppressWarnings({ "unchecked", "static-access" })
	public static PagingLoadResult<Proveedor> getPaginateCombo2(GxtComboBoxPaginate paginate) {
		sqlMap = Conexion.getSqlMap();

		paginate.searchField = "razonsocial";
		paginate.sortField = "razonsocial";
		paginate.sortDir = "ASC";
		paginate.setLimit();
		if (paginate.order.equals("")) {
			paginate.order = " order by id desc";
		}
		List<Proveedor> data = null;
		try {
			data = sqlMap.queryForList("getComboProveedores", paginate);

		} catch (SQLException e) {
			e.printStackTrace();
		}
		return new BasePagingLoadResult<Proveedor>(data, paginate.offset, count2(paginate));
	}

	public static Integer count2(GxtComboBoxPaginate paginate) {
		Integer count = null;
		try {
			count = (Integer) sqlMap.queryForObject("countComboProveedores",
					paginate);
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return count;
	}

}
